﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace UtilLib.Tasks
{
	static class TaskExtensions
	{
		/// <summary>
		/// 消除async Task的告警用
		/// </summary>
		public static void IgnorCompletion(this Task task)
		{
			//什么都不需要干即可
		}

		/// <summary>
		/// 捕获Task的异常，返回没有异常的Task
		/// </summary>
		public static Task IgnorException(this Task task)
		{
			return task.ContinueWith(_ => { });
		}

		/// <summary>
		/// 在任务的执行期间执行期间按照一定的周期执行回调函数
		/// 这个是简单的版本，复杂的功能用RX下的扩展
		/// </summary>
		public static async void Interval(this Task task, TimeSpan peroid,  Action onTimeOut)
		{
			while (!task.IsCompleted)
			{
				await Task.Delay(peroid);
				onTimeOut();
			}
		}
	}
}
